package com.mojo.io.codec;

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;

/**
 * java io中的编解码
 * UTF-16 与 UTF-8 都是处理 Unicode 编码，它们的编码规则不太相同，相对来说 UTF-16 编码效率最高，字符到字节相互转换更简单，进行字符串操作也更好。
 * 它适合在本地磁盘和内存之间使用，可以进行字符和字节之间快速切换，如 Java 的内存编码就是采用 UTF-16 编码。
 * 但是它不适合在网络之间传输，因为网络传输容易损坏字节流，一旦字节流损坏将很难恢复，想比较而言 UTF-8 更适合网络传输
 *
 * @author <a href="mailto:sjj@jianzhimao.com">mojo</a>
 * copyright (C), 2013-2022, 广州九尾信息科技有限公司
 * @date 2022/11/1 15:54
 */
public class CodecDemo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String name = "I am 牧哲";
        byte[] bytes = name.getBytes(StandardCharsets.UTF_8);
        for (byte b : bytes) {
            System.out.print(b+"\t");
        }
        System.out.println(bytes);
        byte[] gbk = name.getBytes("GBK");
        byte[] utf16 = name.getBytes(StandardCharsets.UTF_16);
        byte[] ISO_8859_1 = name.getBytes(StandardCharsets.ISO_8859_1);
    }
}
